package com.cskaoyan.javase._1interface._4example;

import com.cskaoyan.javase._1interface._4example.model.Goods;
import com.cskaoyan.javase._1interface._4example.operation.impl.IOperationImpl;

/**
 * 某电商系统后台，前端程序员需要后端程序员，提供接口来完成库存的管理，展示页面。
 * 假如前后端商量好，要求：
 *      1.展示全部商品（goods）页面时，将仅装有商品对象的数组返回，前端不提供任何数据。
 *      2.新增商品时，前端提供商品各种参数，
 *          后端需要校验ID唯一性，然后将对象插入数组，返回插入结果。
 *          分析:
 *              插入时,新增一条商品信息,就是将一个商品对象插入数据源中
 *              这里方法的形参是商品各种信息,为了简洁起见,方法的形参直接传入一个商品对象
 *              方法的返回值如何写呢?
 *              商品的插入有几种结果呢?
 *                  1.商品id合法,商品数组也没满,插入成功
 *                  2.商品id重复,或者干脆id就是一个不合法的(假如小于等于0的id不合法)
 *                      插入失败
 *                  3.id是合法的,但是数组已经满了,插不进去了
 *              方法的执行有三种结果,那就不能用布尔类型返回值了,这里可以给一个int值:
 *                  0 表示插入成功
 *                  1 表示id不合法
 *                  2 表示数组已满
 *
 *      3.删除商品时，前端提供商品ID，
 *          后端将该商品删除后，返回删除删除结果。（成功返回true，找不到该ID的商品返回false）
 *          分析:
 *              页面需要传给后端一个商品id,然后后端去数据源中将该id的商品删除(不是真删除,而是赋值为null)
 *              删除成功就返回true
 *              删除失败(id没有找到商品)返回false
 *
 *
 * @since 15:05
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        IOperationImpl io = new IOperationImpl();
        System.out.println("现在商品信息如下:");
        for (Goods goods : io.getAllRealGoods()) {
            goods.showGoods();
        }
        System.out.println("现在开始新增一条商品信息: ");
        Goods goodsInsert = new Goods(10, "宏碁笔记本", 5000, "宏碁");
        switch (io.insertGoods(goodsInsert)) {
            case 0:
                // 插入成功
                System.out.println("插入成功!");
                System.out.println("现在商品信息如下:");
                for (Goods goods : io.getAllRealGoods()) {
                    goods.showGoods();
                }
                break;
            case 1:
                System.out.println("id不合法,插入失败!");
                System.out.println("现在商品信息如下:");
                for (Goods goods : io.getAllRealGoods()) {
                    goods.showGoods();
                }
                break;
            case 2:
                System.out.println("数组满了,插入失败!");
                System.out.println("现在商品信息如下:");
                for (Goods goods : io.getAllRealGoods()) {
                    goods.showGoods();
                }
        }

        System.out.println("现在开始删除一条商品信息: ");
        if (io.deleteGoods(100)) {
            // 删除成功
            System.out.println("删除成功!");
            System.out.println("现在商品信息如下:");
            for (Goods goods : io.getAllRealGoods()) {
                goods.showGoods();
            }
        } else {
            System.out.println("删除失败,没有找到目标id商品!");
            System.out.println("现在商品信息如下:");
            for (Goods goods : io.getAllRealGoods()) {
                goods.showGoods();
            }
        }
    }
}
